package minidb.querycondition;

import java.util.*;
import java.util.regex.*;

public class RegexConvertor
{
	public static String DoConvert(String tar)
	{
		List<String> list=new LinkedList<String>();
		for(int i=0;i<tar.length();i++)
			list.add(tar.substring(i, i+1));
		
		ListIterator<String> iterator=list.listIterator();
		while(iterator.hasNext())
		{
			char s=((String)iterator.next()).charAt(0);
			switch(s)
			{
				case '\\':
				{
					if(!iterator.hasNext())
						return null;
					char sn=((String)iterator.next()).charAt(0);
					switch(sn)
					{
						case '\\':
						case '[':
						case ']':
						case '^':
							break;
						case '%':
						case '_':
							iterator.previous();
							iterator.previous();
							iterator.remove();
							iterator.next();
							break;
						default:
							return null;
							
					}
					break;
				}
				case '_':
				{
					iterator.previous();
					iterator.remove();
					iterator.add("(");
					iterator.add(".");
					iterator.add(")");
					break;
				}
				case '%':
				{
					iterator.previous();
					iterator.remove();
					iterator.add("(");
					iterator.add(".");
					iterator.add("*");
					iterator.add("?");
					iterator.add(")");
					break;
				}
				case '*':
				case '?':
				case '+':
				case '.':
				case '(':
				case ')':
				{
					iterator.previous();
					iterator.add("\\");
					iterator.next();
					break;
				}
			}
		}
		
		StringBuilder sb=new StringBuilder("");
		for(String s:list)
			sb.append(s);
		return sb.toString();
	}
}
